package com.uptown.matrix.core.annotation;

import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;

/**
 * 消费者注解
 * 	1、redis消费者类必须继承StreamListener<String, ObjectRecord<String, Object>> 统一消息风格、注解加在onMessage方法上
 * 	2、kafka消费者类只需要在类和对应方法加该注解，对方法名无要求
 * 	3、详细见template下
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RUNTIME)
public @interface MatrixMessageListener {

	// topic add消息时自动创建
	String streamKey() default "";

	// 消费者组，同组内共同消费同一topic，一条消息只能被同组的一个消费者消费
	String consumerGroup() default "";

	// 消费者名称
	String consumerName() default "";

	// 消费组件类型 redis、kafka
	String componentType() default "redis";

	// 消费组件地址，redis默认用配置文件内置的
	String bootServer() default "";

	// rocketmq tag
	String tag() default "*";

	MessageModel rocketMqModel() default MessageModel.CLUSTERING;
}
